package com.tiancheng.trade.order.service;

import com.tiancheng.trade.commom.core.data.PageInfo;
import com.tiancheng.trade.commom.core.data.Result;
import com.tiancheng.trade.order.model.ReportChannel;
import com.tiancheng.trade.order.model.ReportRecord;
import com.tiancheng.trade.order.vo.admin.QueryReportChannelVO;
import com.tiancheng.trade.order.vo.app.*;

import java.util.List;
import java.util.Set;

/**
 * 上报渠道Service接口
 *
 * @author likailun
 * @date 2022-12-19 15:14
 */
public interface ReportChannelService {

    /**
     * 渠道上报
     *
     * @param params
     * @param uid
     */
    Result<ChannelReportCacheVO> report(ChannelReportVO params, String uid);

    /**
     * 添加上报渠道
     *
     * @param channel
     * @return
     */
    void add(ReportChannel channel);

    /**
     * 修改上报渠道
     *
     * @param channel 渠道信息
     * @return
     */
    void update(ReportChannel channel);

    /**
     * 设置上报渠道状态
     *
     * @param id    渠道id
     * @param state 0-启用，1-禁用
     * @return
     */
    void setState(Long id, Integer state);

    /**
     * 删除上报渠道
     *
     * @param id
     * @return
     */
    void delete(Long id);

    /**
     * 查询上报渠道列表
     *
     * @return 银行信息列表
     */
    PageInfo<ReportChannel> queryBankPage(QueryReportChannelVO queryReportChannelVO);

    List<ReportChannel> queryByIds(Set<Long> ids);

    /**
     * 删除缓存
     *
     * @param uid
     */
    void clearCache(String uid);

    /**
     * 删除渠道缓存
     */
    void clearChannelCache(String mainArg);

    /**
     * 查询未删除的渠道 /**
     * state 状态：0-启用，1-禁用
     * isDelete 是否删除，true-删除
     */
    List<ReportChannel> queryReportChannel(Integer state, boolean isDelete);

    List<ReportRecord> queryReportRecord(String orderId);
}
